package dinucleotides;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

import javax.swing.JButton;

public class Event implements ActionListener {
	
	private IHM ihm;
	
	/** Constructeur qui gère les évènements de l'IHM passé en paramètre
	 * @param ihm
	 */
	public Event(IHM ihm) {
		this.setIhm(ihm);
	}
	
	/** Getter pour l'IHM
	 * @return
	 */
	public IHM getIhm() {
		return ihm;
	}
	
	/** Setter pour l'IHM
	 * @param ihm
	 */
	public final void setIhm(IHM ihm) {
		this.ihm = ihm;
	}
	
	/* Action sur le clics des boutons
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	@Override
	public void actionPerformed(ActionEvent arg0) {
		Object obj = arg0.getSource();
		if (obj instanceof JButton) {
			JButton jb = (JButton)obj;
			GenerateurCodes gen = Main.getGenerateur();
			int[] res;
			
			for (Algo a : Algo.values()) {
				if (jb == ihm.getJbAll() || jb == ihm.getJbAlgo(a.getIdx())) {
					res = gen.getNbCodes(a);
					Fichiers.ecrireFichier("Nb" + a.getNomFichier() + ".txt", res);
					
					for (int i=1; i <= gen.getNbPaires(); i++) {
						Fichiers.ecrireFichier("List" + a.getNomFichier() + "Lg"+i+".txt",gen.getCodes(a,i));
					}
					
					for (int i = 0; i < res.length; i++) {
						ihm.getCtm(a.getIdx()).setValueAt(""+res[i], 0, i+1);
					}
				}
			}
			
			if (jb == ihm.getJbFolder()) {
				String osName = System.getProperty("os.name");
				String cmd = System.getProperty("user.dir") + File.separatorChar + Main.DOSSIER_RESULTAT;
				if (osName.toLowerCase().contains("windows")) {
					cmd = "explorer " + cmd;
				} else {//Linux
					cmd = "xdg-open " + cmd;
				}
				try {
					Runtime.getRuntime().exec(cmd);
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}